<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title>变量作用域</title>
        <!-- 用 script 元素在 HTML 文档中嵌入 JavaScript 脚本 -->
        <script type="text/javascript">
            
            function show(){
                // console.log('你好，'+ fullName);  // ReferenceError: fullName is not defined
                // 在函数内直接为某个不存在的变量赋值会导致该变量绑定到"global对象"中
                fullName = '李小芳'; // 相当于 window.fullName = '李小芳'
                console.log('你好，'+ fullName);  // `你好，李小芳`
            }

            // console.log(fullName); // ReferenceError: fullName is not defined
            show();
            console.log(fullName);
            // 通过 window 或 globalThis 来获取 fullName 可以证明
            // show 函数执行后 fullName 成为了 "global对象" 上的一个变量
            console.log( window.fullName );
            console.log( globalThis.fullName );
            // 在浏览器环境中 window 和 globalThis 是同一个对象，都指向 "global对象"
            console.log( window === globalThis );
        </script>
    </head>
    <body>
        <h3>请在浏览器终端中查看输出结果</h3>
        <p>即使是在 IE 11 中，它也不支持 globalThis 。</p>
    </body>
</html>